﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SaludOcupacional.DataAccess;
using SaludOcupacional.Exceptions;
using SaludOcupacional.Model;
using System.Collections.ObjectModel;

namespace SaludOcupacional.Controller
{
    public class EmpleadoManager
    {
        public static void ValidarNuevoEmpleado(string codigo, string ci, string seguro,  string nombre,  string paterno, string materno)
        {
            
            if(codigo == "")
                throw new LoginException("Ingrese Codigo Embol");
            if (ci == "")
                throw new LoginException("Ingrese Carnet de Identidad");
            if (seguro == "")
                throw new LoginException("Ingrese Seguro");

            if (nombre == "")
                throw new LoginException("Ingrese El Nombre");

            if (paterno == "")
                throw new LoginException("Ingrese Apellido Paterno");
            if (materno == "")
                throw new LoginException("Ingrese Apellido Materno");
        }

        public static void CreateEmpleado(Empleado empleado)
        {
            if (empleado == null)
                throw new LoginException("El Empleado No Puede Ser Nulo!");

            if (EmpleadoManager.GetEmpleadoByCi(empleado.Ci.ToString()) != null)
            {
                throw new LoginException("El ci ya esta en uso!!");
            }

            using (EmpleadoDataAccess daccess = new EmpleadoDataAccess())
            {
                daccess.CreateEmpleado(empleado);
            }
        }

        public static Empleado GetEmpleadoByCi(string ci)
        {
            Empleado u;
            if (string.IsNullOrEmpty(ci))
                throw new LoginException("ci");

            using (EmpleadoDataAccess daccess = new EmpleadoDataAccess())
            {
                u = daccess.GetEmpleadoByCi(Convert.ToInt32(ci));
            }

            return u;
        }

        public static void EditEmpleado(Empleado empleado)
        {
            if (empleado == null)
                throw new LoginException("El Empleado No Puede Ser Nulo!");

            using (EmpleadoDataAccess daccess = new EmpleadoDataAccess())
            {
                daccess.EditEmpleado(empleado);
            }
        }

        public static Collection<Empleado> BuscarEmpleadoPorNombre(string nombre)
        {


            using (EmpleadoDataAccess daccess = new EmpleadoDataAccess())
            {
                Collection<Empleado> empleadoCollection = new Collection<Empleado>();
                empleadoCollection = daccess.BuscarEmpleadoPorNombre(nombre);
                return empleadoCollection;
            }

        }

        public static Collection<Empleado> TodosLosEmpleados()
        {


            using (EmpleadoDataAccess daccess = new EmpleadoDataAccess())
            {
                Collection<Empleado> empleadoCollection = new Collection<Empleado>();
                empleadoCollection = daccess.TodosLosEmpleados();
                return empleadoCollection;
            }

        }


    }
}
